:group 'which-key
:type 'boolean)
+(defcustom which-key-delayed-prefixes nil
+ "A list of key sequences (in the form of vectors of events)
+that should not pop up the which-key buffer after
+`which-key-idle-delay' but after `which-key-idle-delay' +
+`which-key-delayed-prefixes-delay'."
+ :group 'which-key
+ :type '(repeat (vector integer)))
+
+(defcustom which-key-delayed-prefixes-delay 1
+ "When `which-key-delayed-prefixes' is non-nil delay which-key
+popup by this many seconds after `which-key-idle-delay'."
+ :group 'which-key
+ :type 'integer)
+
;; Hooks
(defvar which-key-init-buffer-hook '()
"Hook run when which-key buffer is initialized.")
(defvar which-key--inhibit-next-operator-popup nil)
(defvar which-key--current-show-keymap-name nil)
(defvar which-key--prior-show-keymap-args nil)
+(defvar which-key--delayed-timer nil)
(defvar which-key-key-based-description-replacement-alist '()
"New version of
which-key--current-show-keymap-name nil
which-key--prior-show-keymap-args nil
which-key--on-last-page nil)
+ (cancel-timer which-key--delayed-timer)
(when (and which-key-idle-secondary-delay
which-key--secondary-timer-active)
(which-key--start-timer))
(which-key--create-pages formatted-keys))
(which-key--show-page 0)))))
-(defun which-key--update ()
+(defun which-key--update (&optional delayed)
"Function run by timer to possibly trigger `which-key--create-buffer-and-show'."
- (let ((prefix-keys (this-single-command-keys)))
+ (let ((prefix-keys (this-single-command-keys))
+ skip)
;; (when (> (length prefix-keys) 0)
;; (message "key: %s" (key-description prefix-keys)))
;; (when (> (length prefix-keys) 0)
(eq this-command 'god-mode-self-insert))
(setq prefix-keys (when which-key--god-mode-key-string
(kbd which-key--god-mode-key-string))))
+ (when (and which-key-delayed-prefixes
+ which-key-delayed-prefixes-delay
+ (> (length prefix-keys) 0)
+ (not delayed)
+ (member prefix-keys which-key-delayed-prefixes))
+ (setq which-key--delayed-timer
+ (run-with-idle-timer which-key-delayed-prefixes-delay nil
+ #'which-key--update t))
+ (setq skip t))
(cond ((and (> (length prefix-keys) 0)
(or (keymapp (key-binding prefix-keys))
;; Some keymaps are stored here like iso-transl-ctl-x-8-map
(keymapp (which-key--safe-lookup-key
function-key-map prefix-keys)))
(not which-key-inhibit)
+ (not skip)
;; Do not display the popup if a command is currently being
;; executed
(or (and which-key-allow-evil-operators